<?php

/**
 * 小程序服务商管理系统 v1.0.1
 *
 * 商业运营到axzz.cn官网进行授权使用。
 *
 * (c) cighsen02 <xiayu@959602.com>
 *
 * Create at：2025.03.25
 * Update at: 2025.05.06
*/

namespace App\Http\Middleware;

use App\Exceptions\JsonResponseException;
use Closure;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

use function explode;
use function env;
use function in_array;

/**
 * 白名单
 */
class IpWhitelist
{
    /**
     * Handle an incoming request.
     *
     * @param Request $request
     * @param  Closure $next
     * @return JsonResponse
     */
    public function handle(Request $request, Closure $next)
    {
        // 获取允许的 IP 列表
        $allowedIps = explode(',', env('ALLOWED_IPS', '127.0.0.1'));

        // 检查 IP 是否在白名单中
        if (!in_array($request->ip(), $allowedIps)) {

            throw new JsonResponseException('Unauthorized', 403);
        }

        return $next($request);
    }
}
